package ${package}.service;

import com.baomidou.mybatisplus.extension.service.IService;
import ${package}.db.model.${ClassName};
<#if exportExcel>
import ${package}.dto.${classname}.excel.${ClassName}ExcelExportDto;
</#if>
<#if importExcel>
import ${package}.dto.${classname}.excel.${ClassName}ExcelImportDto;
</#if>
import ${package}.dto.${classname}.req.${ClassName}AddDto;
import ${package}.dto.${classname}.req.${ClassName}EditDto;
<#if importExcel>
import ${package}.dto.${classname}.req.${ClassName}ImportDto;
</#if>
import ${package}.dto.${classname}.req.${ClassName}ListDto;
import ${package}.dto.${classname}.res.${ClassName}DetailRes;
import com.imydao.support.system.res.BaseRes;
<#if importExcel>
import com.imydao.support.tool.excel.res.ExcelRes;
</#if>
import com.imydao.support.tool.page.res.PageBean;
<#if importExcel>
import org.springframework.web.multipart.MultipartFile;
</#if>

import java.util.List;

/**
 * ${tableComment}
 *
 * @author ${author} ${email}
 * @since ${version} ${date}
 */
public interface ${ClassName}Service extends IService<${ClassName}> {

    /**
     * 分页列表
     * @param dto 分页请求参数
     * @return 分页列表
     */
    BaseRes<PageBean<${ClassName}>> pageList(${ClassName}ListDto dto);

    /**
     * 保存
     * @param dto 添加对象
     * @return 主键id
     */
    BaseRes<Long> add(${ClassName}AddDto dto);

    /**
     * 编辑
     * @param dto 编辑对象
     * @return 主键id
     */
    BaseRes<Long> edit(${ClassName}EditDto dto);

<#if importExcel>
    /**
     * excel导入
     * @param excel excel
     * @param dto 请求参数
     * @return excel导入结果信息
     */
    BaseRes<ExcelRes<${ClassName}ExcelImportDto>> importExcel(MultipartFile excel, ${ClassName}ImportDto dto);
</#if>

<#if exportExcel>
    /**
     * excel导出数据
     * @param dto 请求参数
     * @return excel导出数据列表
     */
    List<${ClassName}ExcelExportDto> exportExcel(${ClassName}ListDto dto);
</#if>
                
    /**
     * 根据Id查询详情
     *
     * @param id 主键id
     * @return 详情
     */
    BaseRes<${ClassName}DetailRes> detail(Long id);

    /**
     * 删除
     * @param id 主键id
     * @return 已删除id
     */
    BaseRes<Long> delete(Long id);
}